<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <script>

      var person = [
        {
          id: 2,
          name: 'maria',
          age: 21
        },
        {
          id: 1,
          name: 'tom',
          age: 20
        },
        {
          id: 4,
          name: 'jane',
          age: 34
        },
        {
          id: 3,
          name: 'kristina',
          age: 18
        },
        {
          id: 5,
          name: 'arvin',
          age: 20
        },
        {
          id: 6,
          name: 'aaa',
          age: 21
        }
      ]
      //id--214356
      //age--21,20,34,18,20,21

      // function sortBy(field) {
      //   return function(a,b) {
      //     return a[field] - b[field];
      //   }
      // }
      // console.log(person.sort(sortBy('age')))

    // function sortBy(arr){
    //   for(var i=1;i<arr.length;i++){
    //     var t = arr[i]
    //     var p = i - 1
    //     while(p>=0&&arr[p].age>t.age){
    //       arr[p+1] = arr[p]
    //       p--
    //     }
    //     arr[p+1] = t
    //   }
    // }

    // function sortBy(arr,type){
    //   switch(type){
    //     case 'id':
    //       for(var i=1;i<arr.length;i++){
    //         var t = arr[i]
    //         var p = i - 1
    //         while(p>=0&&arr[p].id>t.id){
    //           arr[p+1] = arr[p]
    //           p--
    //         }
    //         arr[p+1] = t
    //       }
    //       break;
    //     case 'age':
    //       for(var i=1;i<arr.length;i++){
    //         var t = arr[i]
    //         var p = i - 1
    //         while(p>=0&&arr[p].age>t.age){
    //           arr[p+1] = arr[p]
    //           p--
    //         }
    //         arr[p+1] = t
    //       }
    //   }
    // }
    //
    // sortBy(person,'id')
    // console.log(person)



    /********************************************* 1st *********************************************/

    // function sortBy(arr, type, dir){
    //   switch(type){
    //     case 'age':
    //       diffType(arr,'age',dir);
    //       break;
    //     case 'id':
    //       diffType(arr,'id',dir)
    //   }
    // }
    //
    // function diffType(arr, type, dir){
    //   for(var i=1;i<arr.length;i++){
    //     var t = arr[i];
    //     var p = i - ;
    //     while(p>=0&&arr[p][type]>t[type]){
    //       arr[p+1] = arr[p];
    //       p--
    //     }
    //     arr[p+1] = t
    //   }
    //   if(!dir){
    //     arr.reverse()
    //   }
    // }
    //
    // sortBy(person,'age',1);
    // console.log(person);

    /********************************************* 2nd *********************************************/

    // function sortBy(arr, type, dir) {
    //   for(var i=0;i<arr.length;i++){
    //     arr[i]['currentSort'] = arr[i][type]
    //     var t = arr[i]
    //     var p = i - 1
    //     while(p>=0&&arr[p].currentSort>t.currentSort){
    //       arr[p+1] = arr[p]
    //       p--
    //     }
    //     arr[p+1] = t
    //   }
    //   if(!dir){
    //     arr.reverse()
    //   }
    // }
    //
    // sortBy(person, 'id',0)
    // console.log(person)

    /********************************************* 3rd *********************************************/

    function sortBy(arr,type, dir){
      var arr2 = new Array(arr.length)
      for(var i=0;i<arr.length;i++){
        var obj2 = new Object()
        arr2[i] = obj2
        obj2['currentSortNum'] = arr[i][type]
        obj2['person'] = arr[i]
      }
      for(var i = 1;i<arr2.length;i++){
        var t = arr2[i]
        var p = i - 1
        while(p>=0&&arr2[p].currentSortNum>t.currentSortNum){
          arr2[p+1] = arr2[p]
          p--
        }
        arr2[p+1] = t
      }
      if(!dir){
        arr2.reverse()
      }
      console.log(arr2)
    }

      sortBy(person,'age',0)

    /********************************************* 4th *********************************************/

      // function sortBy(arg1,arg2){
      //   console.log(arg1,arg2)
      //   return function (a,b){
      //     if(a[arg1] == b[arg1]){
      //       return a[arg2] - b[arg2]
      //     }else{
      //       return a[arg1] - b[arg1]
      //     }
      //   }
      // }
      //
      // function sortData(arg1,arg2,dir){
      //   if(dir){
      //     console.log(person.sort(sortBy(arg1,arg2)))
      //   }else{
      //     console.log(person.sort(sortBy(arg1,arg2)).reverse())
      //   }
      // }
      //
      // sortData('age','id',1)
  </script>
</body>
</html>